1. Field of the Invention
The present invention relates to an apparatus and method for secure distribution of data. More particularly, the present invention relates to an apparatus and method for secure distribution of software, software updates, and configuration data.
2. Description of Related Art
In today's business environment, data is one of the most valuable resources required for maintaining a competitive edge. As a result, businesses must often be able to maintain data confidentiality, readily determine the authenticity of data, and closely control access to data. As used herein, the term "data" means a representation of facts, concepts or instructions in a formalized manner suitable for communication, interpretation, or processing by human or automatic means, including, but not limited to, software, software updates, and configuration data.
Data systems commonly consist of many types and sizes of computer systems that are interconnected through many different electronic data networks. It is now common for an organization to interconnect its data systems with systems that belong to customers, vendors, and competitors. Larger organizations might include international operations, or they might provide continual services. For purposes herein, "computer" includes a device capable of performing the functions of a Turing Machine, including a microcomputer, minicomputer, or mainframe computer. A Turing Machine is a well-known computer science concept and is explained in Encyclopedia of Computer Science, Ed. Anthony Ralston, ISBN 0-88405-321-0, which is specifically incorporated herein by reference. "Memory" includes a device or devices for storing data for use by a computer, including electronic, magnetic, and electro-magnetic memory.
A combination of elements must work together to achieve a more secure environment. A security policy, based on an appraisal of the value of the data and potential threats to that data, provides the foundation for a secure environment.
Security functions can be categorized as follows:
Identification and authentication. Identifies users to the system and provides proof that they are who they claim to be. PA1 Access control. Determines which users can access which resources. PA1 Data confidentiality. Protects an organization's sensitive data from unauthorized disclosure. PA1 Data integrity. Ensures that data is in its original forms and that it has not been altered. PA1 Security management. Administers, controls, and reviews a business, security policy. PA1 Nonrepudiation. Assures that the message was sent by the appropriate individual. PA1 the algorithm requires many computer instructions to be processed PA1 the keys must be protected so that they can remain secret PA1 performance can be improved PA1 ensure the security of cryptographic keys PA1 ensure the integrity of the cryptographic processes PA1 limit the key-management activities to a well-defined and carefully controllable set of services PA1 Identification and verification. Identification is the ability to use a unique name, label, or other reference to identify each user or program to the system. Verification is the ability to provide proof that users and programs are who and what they claim to be. (Verification is also known as "authentication".) PA1 Authorization. Authorization is the process whereby users or programs are restricted to specific resources, such as data sets, programs, or transactions. (Authorization is also known as "access control".) PA1 Enforcement. Enforcement is a subsystem process of verifying the requester's authorization. PA1 using local access controls PA1 using cryptographic processing to ensure the authenticity of a process PA1 ensuring that the authorization information is confidential PA1 a particular model number PA1 a manufacture date within a particular range of dates PA1 a particular version of software installed PA1 a certain ranges of serial numbers PA1 a specific combinations of features
Cryptography includes a set of techniques for scrambling or disguising data so that it is available only to someone who can restore the data to its original form. In current computer systems, cryptography provides a strong, economical basis for keeping data confidential and for verifying data integrity. Cryptography: A Guide for the Design and Implementation of Secure Systems, by Carl H. Meyer and Stephen M. Matyas. ISBN 0-471-04892-5, John Wiley & Sons, Inc. (1982), is a classic text on the design and implementation of cryptographic systems, which is specifically incorporated herein by reference.
For commercial business applications, the cryptographic process known as the Data Encryption Algorithm (DEA) has been widely adopted. The Data Encryption Standard (DES), as well as other documents, defines how to use the DEA to encipher data. Federal Information Processing Standards Publication 46, which defines DES, is reprinted in the Meyer & Matyas text. Many other processes for concealing data, such as protection of passwords and personal identification numbers (PINs), are based on the DES process. The DES algorithm uses a key to vary the way that the algorithm processes the data. A DES key is a very small piece of data (56 bits) that is normally retained in 8 bytes. The same key is used to transform the original data (plaintext) to its disguised, enciphered form (ciphertext) and to return it to its plaintext form. Because the DES algorithm is common knowledge, one must keep the key secret to make the data confidential; otherwise, someone who has the key that one used to encipher the data would be able to decipher the data. Key management refers to the procedures that are used to keep keys secret.
To confirm the integrity of data, one can use the DES algorithm to compute a message authentication code (MAC). Used in this way the DES algorithm is a powerful tool; it is almost impossible to meaningfully modify the data and still have it produce the same MAC for a given key. The standardized approaches authenticate data such as financial transactions, passwords, and computer programs.
After the MAC has been computed, it is sent with data. To authenticate the data, the system uses the DES algorithm to recompute the MAC; the system then compares this result with the MAC that was sent with the data. Someone could, of course, change both the data and the MAC; therefore, the key that is used to compute the MAC must be kept secret between the MAC's originator and the MAC's authenticator.
An alternative approach to data integrity checking uses a standard key value and multiple iterations of the DES algorithm to generate a modification detection code (MDC). In this approach to data integrity checking, the MDC must be received from a trusted source. The person who wants to authenticate the data recomputes the MDC and compares the result with the MDC that was sent with the data.
Because the DES algorithm has been used for many years, its strength has been well demonstrated. Both software and specialized hardware can implement the DES algorithm. A hardware solution is often desirable for the following reasons:
If a data security threat comes from an external source, a software implementation of the cryptographic algorithm might be sufficient; unfortunately, however, much fraud originates with individuals within an organization (insiders). As a result, specialized cryptographic hardware can be required to protect against both insider and outsider data security threats. Well-designed hardware can do the following:
The DES algorithm, which has been proven to be efficient and strong, is widely known; however the keys must normally remain secret. Because the same key is used both to encipher the data and to decipher the data, the process is said to be symmetric; it uses a symmetric key.
In another type of cryptographic process, an asymmetric process, one key is used to encipher the data, while a different but corresponding key is used to decipher the data to its original form. A system that uses this type of process is known as a public-key system. The key that is used to encipher the data is widely known, but the corresponding key for deciphering the data is secret. For example, many people who know a person's public key can send enciphered data to that person confidentially, knowing that only that person should possess the secret key for deciphering the data. Public-key cryptographic algorithms have been incorporated into processes for simplifying the distribution of secret keys and for assuring data integrity, including providing nonrepudiation by using digital signatures. Public-key and digital signature techniques are discussed in more detail the Meyer & Matyas text.
Public-key algorithms (e.g., RSA algorithm, by R. Rivest, A. Shamir, and L. Adleman) use a relatively large key and use even more computer time than the DES algorithm. The use of a public-key system is, therefore, often restricted to situations in which the characteristics of the public-key algorithms have special value.
In both the DES and RSA algorithms, no practical means exists to identically cipher data without knowing the cryptographic key; therefore, keeping a key secret at a cryptographic node is essential. In real systems, however, this often does not provide sufficient protection. If adversaries have access to the cryptographic process and to certain protected keys, they could possibly misuse the keys and eventually compromise the system. A carefully devised set of processes must be in place to protect and distribute cryptographic keys in a secure manner.
Access control protects data by allowing only persons or programs with a legitimate need to access system resources, such as a file, selected records or fields in a file, a hardware device, or the computing capability of the system. Access control uses the following services:
In systems that consist of multiple computers, it is increasingly necessary for persons or programs at one system to be able to convince persons or programs at another system that they are entitled to receive service. Common solutions to this problem involve the following:
Many computer products and peripherals now have their own intelligence, separate from the computer itself, in the form of integrated microprocessors. These microprocessors use stored programs to provide some part of the device's function. For example, the IBM 4755 Cryptographic Adapter is a device which includes a microprocessor, memory, and programming logic mounted on a printed circuit board. Functions are housed within a tamper-resistant module, or secured area, for protection, such as that discussed more fully in U.S. Pat. No. 5,027,397, which is specifically incorporated herein by reference. The IBM 4755 is a component of the IBM Transaction Security System, discussed in the IBM publication entitled "Transaction Security System: General Information Manual and Planning Guide" (GA34-2137-0), U.S. Pat. No. 5,048,085, and U.S. Pat. No. 5,148,481, which are specifically incorporated herein by reference.
Typically, two kinds of memory are associated with these microprocessors: permanent (unalterable or nonvolatile) memory for the program; and volatile memory for data used by the program. Permanent memory is typically Read Only Memory (ROM), Programmable Read Only Memory (PROM), or Erasable Programmable Read Only Memory (EPROM). Volatile memory is typically a static or dynamic Random Access Memory (RAM), which loses all stored data when power is removed.
Newer technologies allow the designer to use memory which is nonvolatile, but reprogrammable. That is, memory in which the data can be changed, but the contents are retained when the power is off. Several technologies can be used to obtain these characteristics. Flash EPROM (FEPROM) permits areas of memory to be erased electronically and then reprogrammed. Electrically Erasable PROM (EEPROM) permits individual bytes or bits to be rewritten much like RAM memory. Complementary Metal-Oxide Semiconductor (CMOS) RAM with battery back-up uses little power and retains RAM contents when system power is off.
These newer kinds of memory can be used in two ways to improve the value of the product.
First, if some or all of the microprocessor program is stored in nonvolatile, reprogrammable memory, the program can be changed after the product is manufactured. Thus, new features can be added and errors can be corrected. This prevents product obsolescence and protects the manufacturer from high warranty costs when errors occur.
Second, data stored in the memory can control the configuration of the product. One such use it; to selectively enable or disable product features. In this way, the manufacturer can produce a standard product, and sell it for a variety of applications which need different features. Users can be charged for an upgrade to enable new features, which will be highly profitable to the manufacturer since no new hardware has to be shipped or installed.
There are many circumstances which would make it advantageous to be able to target such upgrades to a specific subset of the total population of devices. The reason may be to prevent applying an upgrade that is incompatible with the underlying hardware or software, or it may be to restrict the upgrade to a specific set of users or devices. For example, the manufacturer may want to apply the upgrade only to devices which have:
It is easy to see why this kind of flexibility is highly desirable, for both the manufacturer and the user. There is a significant impediment to its use, however; security.
Both the manufacturer and user want to be sure they have control over programs that are loaded into the memory. The manufacturer may want to make sure only its programs are used, to ensure the programs meet quality and performance standards. The manufacturer may also want to prevent anyone from learning how the software works, or what the data is that is being sent to the user. The user, on the other hand, wants to make sure the programs in the devices are valid, and prevent any that might malfunction, or which might pose a security threat. An example of a security threat would be a "Trojan horse" program which would normally operate correctly, but which had "secret" features to circumvent the user's security practices, or to divulge the user's secret information.
Typically, there will be one source for all field upgrades to code or configuration data, although other scenarios are possible. For the purposes of discussion, assume that the device manufacturer is the only valid source of code or data updates; and the device is a security adapter card, with a secured area or module where data is protected from disclosure. The problem can then be described with two fundamental requirements:
First, data sent to the user must be kept secret. It must be impossible for anyone to discover or modify the contents of the data.
Second, the user must be able to verify that: the data came from the valid source (e.g., the manufacturer). This is a form of non-repudiation.